Computerized systems have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. The production and storage of multimedia production such as video, audio and imaging is one such example that has benefited from the utilization of computerized systems.
However, as the sophistication of multimedia production devices have increased with industry developments, the quality of production has increased commensurately, and thus greater amounts of resources are necessary to produce, transfer, and store multimedia data. The storage of such multimedia, such as pictures, video, music, among others has become expensive, as demand has grown due to the growing ease at which such content is created. Currently available methods for the efficient storage of media files typically consist of compressing the files according to a data compression algorithm belonging to one of two classes: lossless compression and lossy compression.
Lossless compression schemes retain absolute fidelity of the original data—i.e., data which has been compressed with lossless compression is reversible so that compressed data can be reconstructed in the exact form of the original. Typical lossless compression applications use two different kinds of algorithms: a compression algorithm which generates a statistical model for the input data, and a compression algorithm that then maps the input data to bit sequences using the generated model in such a way that “probable” (e.g. frequently encountered) data will produce shorter output than “improbable” data. Lossless compression is typically used when the precise duplication of the original is of paramount importance, or when the significance of deviation is unknown. Examples where lossless compression techniques are typically applied include executable programs, source code, and text files.
Lossy data compression algorithms do not retain fidelity of the original data and introduce relatively minor differences by accepting some loss of data in order to achieve higher compression. Most lossy compression algorithms allow for variable levels of quality (compression) and as compression is increased, file size is reduced. At the highest compression levels, deterioration becomes noticeable. Lossy compression is most commonly used to compress multimedia data (audio, video, still images), especially in applications such as streaming media and internet telephony. Lossy compression formats suffer from generation loss: repeatedly compressing and decompressing a file will cause the file to progressively lose quality. This is in contrast with lossless data compression, which suffers no loss in quality from successive compressions. The advantage of lossy methods over lossless methods is that in some cases a lossy method can produce a much smaller compressed file than any known lossless method, while still meeting the requirements of the application.
Traditional techniques employed in data storage devices use lossless compression techniques to conserve space taken by older or less-used data. Lossless data compression algorithms will always fail to compress some files, for example any lossless compression algorithm will fail to compress data containing no discernible patterns. Attempts to compress data that has been compressed already will therefore usually result in an expansion, as will attempts to compress encrypted data. Accordingly, these techniques do not work well on popular file formats that already utilize compressions (e.g., .jpg, .mpg, .mp2, .mp3, etc.).
Another technique employed by some online repositories includes a priori restraints on file sizes and/or file types. For example, an online image hosting service may restrict uploaded images to one file format (e.g., .jpg), and subject to strict size restraints. As such, non compliant images (e.g., large images, or images of non-compliant file types) must be individually resized or reformatted before submission. Naturally, when a user of the service has a large amount of images to upload, the process can be extraordinarily inefficient, time-consuming, and user-intensive.